Draft: add rdmo.config app for Plugin model (plugin management)#1436
Draft: add rdmo.config app for Plugin model (plugin management)#1436MyPyDavid wants to merge 127 commits into2.5.0/releasefrom
rdmo.config app for Plugin model (plugin management)#1436Conversation
jochenklar
left a comment
There was a problem hiding this comment.
Great! Lets discuss in the meeting.
rdmo/config/models.py
Outdated
| help_text=_('Designates whether this plugin is generally available for projects.') | ||
| ) | ||
|
|
||
| class PluginType(models.TextChoices): |
There was a problem hiding this comment.
I think we can do without this, the Plugin(-class) should know this.
There was a problem hiding this comment.
I have now something like this as a utils.py function, to detect the plugin type from the class inheritance.
PLUGIN_BASES = {
'optionset_provider': OptionsetProvider,
'export': Export,
'import': Import,
'issue_provider': IssueProvider,
}
def detect_plugin_type(plugin_class):
if not issubclass(plugin_class, Plugin):
return "not_an_rdmo_plugin"
for type_name, base_cls in PLUGIN_BASES.items():
if issubclass(plugin_class, base_cls):
return type_name
return 'rdmo_plugin_unknown_type'I kept it as a property in the Plugin model:
@property
def plugin_type(self) -> str:
try:
plugin_class = self.get_class()
except Exception as e:
return e.__class__.__qualname__.lower()
return detect_plugin_type(plugin_class)rdmo.config app for Plugin model
|
I'm getting some strange DB errors for mysql in ci(and sqlite in local testing). django.db.utils.OperationalError: foreign key mismatch - "questions_question" referencing "domain_attribute"From the ci logs: # at
query = b'ALTER TABLE `domain_attribute` DROP COLUMN `attributeentity_ptr_id`' django.db.utils.OperationalError:
(1829, "Cannot drop column 'attributeentity_ptr_id':
needed in a foreign key constraint 'questions_questionse_attribute_id_30ee3ea9_fk_domain_at' of table 'questions_questionset'")The problem can be resolved by removing the app |
Think that I found the bug with help of GPT and could fix it by adding a single dependency to the GPT:
|
rdmo.config app for Plugin modelrdmo.config app for Plugin model
|
Ok got it! Good explanation by ChatGPT. This is why you don't do multi-table inheritance and why past-Jochen dismantled it. |
107f379 to
f5eae22
Compare
|
7031a4b to
6875f9a
Compare
6875f9a to
9791229
Compare
dceca19 to
ae887db
Compare
| return self.filter(Q(groups=None) | Q(groups__in=groups)) | ||
|
|
||
|
|
||
| class ForSiteQuerySetMixin: |
There was a problem hiding this comment.
Could implement this already in #1488, see #1488 (comment)
27516be to
4026f9a
Compare
rdmo.config app for Plugin modelrdmo.config app for Plugin model (plugin managament)
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
| def __str__(self): | ||
| return self.uri | ||
|
|
||
| def save(self, *args, **kwargs): |
There was a problem hiding this comment.
Maybe create instance of plugin here an read plugin_type from the class. Handle raw.
There was a problem hiding this comment.
are you sure that the raw case needs to be handled? I could not find any other model that does it on the save method, only the signal handlers are using it so far..
Otherwise it could be simply
if raw:
return super().save(*args, **kwargs)right?
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
rdmo.config app for Plugin model (plugin managament)rdmo.config app for Plugin model (plugin management)
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
…rsion Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
Description
rdmo.configappPluginmodelPluginbehaves similar to any other element (Catalog, Taks, View)PLUGINS = [ .. ]which replaces the legacy settings (e.g.PROJECT_IMPORT).Deprecations and legacy
rdmo.core.pluginsrdmo.config.pluginsand renamed toPluginBaseRelated issue: #1413